As will be readily understood by those of ordinary skill in the art, software in current computer systems is an integral feature and ensuring that it functions correctly is an essential step in the bringing to market of such systems. There are many and varied technologies and schemes for the testing and development of software, and those relating to interaction of such systems with associated hardware are of particular consideration here.
U.S. Pat. No. 7,181,382B2 (Shier et al) describes a system for the testing and modelling of hardware as part of a software test function. A device simulation framework bridges user address space and kernel space. In kernel space, the simulation framework links to both actual hardware device drivers and device simulator drivers whereby testing may be carried out by reference to both actual and simulated hardware interactions. In user address space the device simulation framework links to a test application specifying the hardware tests to be carried out. In short, the device simulation framework provides a two way communications link between the user address and kernel spaces and enables the test application to log the outcome of each hardware test operation, for example by recording and time-stamping. A further example of a software test system supporting interaction between a test application and a software simulation of hardware is described in United States patent application 2004/0088150 (Gay).
One consideration in any software testing methodology is the efficiency of the test, and one aspect of this to ensure that the so-called structural coverage of the software under test is complete, that is to say to ensure that all branches and conditional features of the software are tested. Example systems for optimising test coverage are described in IBM Technical Disclosure Bulletin Vol. 39 No. 8 Aug. 1996 at pp. 223-225 and in United States patent application 2007/0239959 (Papineau).
A further consideration is the efficiency of operation in relation to desired outcome. A software test application may comprise a suite containing hundreds or even thousands of individual test processes developed to ensure full structural coverage. Requiring the full suite to be run repeatedly, for example after each bug-fix, is expensive both in processing resources and in development time for the system as a whole.
As will be readily understood from the foregoing, a need exists for methods and computer systems that improve the efficiency of testing of software applications.